package com.kgd.news.utils.wx;

import com.alibaba.fastjson.JSON;
import com.jfinal.plugin.ehcache.CacheKit;
import com.kgd.news.entity.Image;
import com.kgd.news.entity.News;
import com.kgd.news.utils.Config;
import com.kgd.news.utils.StringUtilsWx;

public class VideoHelper {

    /**
     * 将腾讯视频地址转变为可用的地址
     * 健壮的代码咋样保存
     *
     * @param image
     */
    public static void transUrlTovalid(Image image) {

        if (Config.getFileBasePath().contains("rmgxspdh")) {
//            116服务器
            String rearUrl = image.getRealurl();
//        https://qqxy.b3ad.cn/News/api/parseTencent?rearUrl=https://v.qq.com/x/page/d0025cxl649.html
            String requestUrl = "https://qqxy.b3ad.cn/News/api/parseTencent?rearUrl=" + rearUrl;
//        解析腾讯地址，统一到阿里云的服务器去做，（情趣汇后台联通网络解析出来的网址移动4g访问卡的用不了）
            String jsonResult = WxHelper.requestUrl(requestUrl);
            String validUrl = transJsonToValid(jsonResult);
            if (!StringUtilsWx.isEmpty(validUrl)) {
                setImageUrlUpdate(image, validUrl);
            } else {
                // TODO: 2017/11/21 出错
            }
            //                跟新网址后就不能再用旧的缓存了
            // TODO: 2017/12/6
//        CacheKit.removeAll("video");不是通过列表里去跟新的
        } else {
//            443服务器
            String rearUrl = image.getRealurl();
            String validUrl = transUriToValid(rearUrl);
            if (!StringUtilsWx.isEmpty(validUrl)) {
                setImageUrlUpdate(image, validUrl);
            } else {
                // TODO: 2017/11/21 出错
            }
        }
    }

    public static void transUrlTovalid(News news) {

        if (Config.getFileBasePath().contains("rmgxspdh")) {
//            116服务器
            String rearUrl = news.getVideorealurl();
//        https://qqxy.b3ad.cn/News/api/parseTencent?rearUrl=https://v.qq.com/x/page/d0025cxl649.html
            String requestUrl = "https://qqxy.b3ad.cn/News/api/parseTencent?rearUrl=" + rearUrl;
//        解析腾讯地址，统一到阿里云的服务器去做，（情趣汇后台联通网络解析出来的网址移动4g访问卡的用不了）
            String jsonResult = WxHelper.requestUrl(requestUrl);
            String validUrl = transJsonToValid(jsonResult);
            if (!StringUtilsWx.isEmpty(validUrl)) {
                setNewsUrlUpdate(news, validUrl);
            } else {
                // TODO: 2017/11/21 出错
            }
            //                跟新网址后就不能再用旧的缓存了
            // TODO: 2017/12/6
//        CacheKit.removeAll("video");不是通过列表里去跟新的
        } else {
//            443服务器
            String rearUrl = news.getVideorealurl();
            String validUrl = transUriToValid(rearUrl);
            if (!StringUtilsWx.isEmpty(validUrl)) {
                setNewsUrlUpdate(news, validUrl);
            } else {
                // TODO: 2017/11/21 出错
            }
        }
    }


    public static void setImageUrlUpdate(Image image, String validUrl) {
        image.setUpdateurltime(System.currentTimeMillis() + "");
        image.setUrl(validUrl);
        image.update();
        CacheKit.removeAll("imageAndVideo");
    }
    public static void setNewsUrlUpdate(News news, String validUrl) {
        news.setUpdateurltime(System.currentTimeMillis() + "");
        news.setVideourl(validUrl);
        news.update();
        CacheKit.removeAll("news");
    }

    public static String transJsonToValid(String jsonResult) {
        int code = JSON.parseObject(jsonResult).getInteger("code");
        if (code == 200) {
            String data = JSON.parseObject(jsonResult).getJSONObject("data").toString();
            if (!StringUtilsWx.isEmpty(data)) {
                String validUrl = JSON.parseObject(data).getString("validUrl");
                return validUrl;
            }
        }
        return "";
    }

    public static String transUriToValid(String rearUrl) {
//        https://v.qq.com/x/page/b0136et5ztz.html,/为何不要转义，\却要转义
        String combinedResult = "";
        try {
            int fi = rearUrl.lastIndexOf("/");
            int end = rearUrl.lastIndexOf(".");
            rearUrl = rearUrl.substring(fi + 1, end);
            String vid1 = "http://vv.video.qq.com/getinfo?vids=";
            String vid2 = "&platform=101001&charge=0&otype=json";
            String vidUrl = vid1 + rearUrl + vid2;
            String result = WxHelper.requestUrl(vidUrl);
            result = result.replace("QZOutputJson=", "");
            result = result.substring(0, result.lastIndexOf(";"));
            //        url + fn + '?vkey=' + fvkey
            String vl = JSON.parseObject(result).getJSONObject("vl").toString();
            String vl0 = JSON.parseObject(vl).getJSONArray("vi").get(0).toString();
            String fn = JSON.parseObject(vl0).getString("fn");
            String fvkey = JSON.parseObject(vl0).getString("fvkey");
            String ul = JSON.parseObject(vl0).getString("ul");
            String ui0 = JSON.parseObject(ul).getJSONArray("ui").get(0).toString();
            String url = JSON.parseObject(ui0).getString("url");
            combinedResult = url + fn + "?vkey=" + fvkey;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return combinedResult;
    }
}
